/**
 * 
 */
package com.ihg.hiex.entity.session.before.delegatework;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ihg.hiex.entity.user.Delegate;

/**
 * @author houtao
 *
 */
@Entity
@Table(name = "delegate_wrok_experience")
public class DelegateWrokExperience {
    
    @Id
    @GeneratedValue
    private Long id;
    
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    private Delegate delegate;
    
    /** 担任执委会成员和/或部门主任 */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel serveAs;
    
    /** 管理损益 */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel manageProfit;
    
    /** 参与部门预算的制定和评审 */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel formulatAessess;
    
    /** 部门人才的开发和评审 */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel developAessess;
    
    /** 接受经验丰富的领导者的辅导和培训 */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel coachTrain;
    
    /** 开发/激励多层次的团队 */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel developEncourage;
    
    /** 参与销售、营销和创收活动 */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel saleRevenue;
    
    /** 在不同酒店工作*/
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel differentHotel;
    
    /** 为不同品牌工作 */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel differentBrand;
    
    /** 在不同文化环境中工作 */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel differentEnvironment;
    
    /** 通过信息系统、报告和一些措施提升酒店业绩  */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel improvePerformance;
    
    /** 大量参与客户关系建立  */
    @Enumerated(EnumType.STRING)
    private WorkExperienceLevel establishRelation;
    
    /** 是否启用 */
    @Column(name = "is_disabled")
    private boolean disabled;
    
	/**
	 * the default constructor.
	 */
	public DelegateWrokExperience() {
	}
	
	/**
	 * 
	 * @param delegate
	 * @return
	 */
	public DelegateWrokExperience init(Delegate delegate) {
		this.delegate = delegate;
		this.disabled = false;
		return this;
	}

	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @return the delegate
	 */
	public Delegate getDelegate() {
		return delegate;
	}

	/**
	 * @return the serveAs
	 */
	public WorkExperienceLevel getServeAs() {
		return serveAs;
	}

	/**
	 * @return the manageProfit
	 */
	public WorkExperienceLevel getManageProfit() {
		return manageProfit;
	}

	/**
	 * @return the formulatAessess
	 */
	public WorkExperienceLevel getFormulatAessess() {
		return formulatAessess;
	}

	/**
	 * @return the developAessess
	 */
	public WorkExperienceLevel getDevelopAessess() {
		return developAessess;
	}

	/**
	 * @return the coachTrain
	 */
	public WorkExperienceLevel getCoachTrain() {
		return coachTrain;
	}

	/**
	 * @return the developEncourage
	 */
	public WorkExperienceLevel getDevelopEncourage() {
		return developEncourage;
	}

	/**
	 * @return the saleRevenue
	 */
	public WorkExperienceLevel getSaleRevenue() {
		return saleRevenue;
	}

	/**
	 * @return the differentHotel
	 */
	public WorkExperienceLevel getDifferentHotel() {
		return differentHotel;
	}

	/**
	 * @return the differentBrand
	 */
	public WorkExperienceLevel getDifferentBrand() {
		return differentBrand;
	}

	/**
	 * @return the differentEnvironment
	 */
	public WorkExperienceLevel getDifferentEnvironment() {
		return differentEnvironment;
	}

	/**
	 * @return the improvePerformance
	 */
	public WorkExperienceLevel getImprovePerformance() {
		return improvePerformance;
	}

	/**
	 * @return the establishRelation
	 */
	public WorkExperienceLevel getEstablishRelation() {
		return establishRelation;
	}

	/**
	 * @return the disabled
	 */
	public boolean isDisabled() {
		return disabled;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}

	/**
	 * @param delegate the delegate to set
	 */
	public void setDelegate(Delegate delegate) {
		this.delegate = delegate;
	}

	/**
	 * @param serveAs the serveAs to set
	 */
	public void setServeAs(WorkExperienceLevel serveAs) {
		this.serveAs = serveAs;
	}

	/**
	 * @param manageProfit the manageProfit to set
	 */
	public void setManageProfit(WorkExperienceLevel manageProfit) {
		this.manageProfit = manageProfit;
	}

	/**
	 * @param formulatAessess the formulatAessess to set
	 */
	public void setFormulatAessess(WorkExperienceLevel formulatAessess) {
		this.formulatAessess = formulatAessess;
	}

	/**
	 * @param developAessess the developAessess to set
	 */
	public void setDevelopAessess(WorkExperienceLevel developAessess) {
		this.developAessess = developAessess;
	}

	/**
	 * @param coachTrain the coachTrain to set
	 */
	public void setCoachTrain(WorkExperienceLevel coachTrain) {
		this.coachTrain = coachTrain;
	}

	/**
	 * @param developEncourage the developEncourage to set
	 */
	public void setDevelopEncourage(WorkExperienceLevel developEncourage) {
		this.developEncourage = developEncourage;
	}

	/**
	 * @param saleRevenue the saleRevenue to set
	 */
	public void setSaleRevenue(WorkExperienceLevel saleRevenue) {
		this.saleRevenue = saleRevenue;
	}

	/**
	 * @param differentHotel the differentHotel to set
	 */
	public void setDifferentHotel(WorkExperienceLevel differentHotel) {
		this.differentHotel = differentHotel;
	}

	/**
	 * @param differentBrand the differentBrand to set
	 */
	public void setDifferentBrand(WorkExperienceLevel differentBrand) {
		this.differentBrand = differentBrand;
	}

	/**
	 * @param differentEnvironment the differentEnvironment to set
	 */
	public void setDifferentEnvironment(WorkExperienceLevel differentEnvironment) {
		this.differentEnvironment = differentEnvironment;
	}

	/**
	 * @param improvePerformance the improvePerformance to set
	 */
	public void setImprovePerformance(WorkExperienceLevel improvePerformance) {
		this.improvePerformance = improvePerformance;
	}

	/**
	 * @param establishRelation the establishRelation to set
	 */
	public void setEstablishRelation(WorkExperienceLevel establishRelation) {
		this.establishRelation = establishRelation;
	}

	/**
	 * @param disabled the disabled to set
	 */
	public void setDisabled(boolean disabled) {
		this.disabled = disabled;
	}
}
